import moment from 'moment'
const getTime = (value) => {
  const time = {}
  if (value === '0') {
    time.startTime = moment().startOf('isoWeek').format('YYYY-MM-DD HH:mm:ss')
    time.endTime = moment().endOf('isoWeek').format('YYYY-MM-DD HH:mm:ss')
    return time
  } else if (value === '1') {
    time.startTime = moment().startOf('month').format('YYYY-MM-DD HH:mm:ss')
    time.endTime = moment().endOf('month').format('YYYY-MM-DD HH:mm:ss')
    return time
  } else if (value === '2') {
    time.startTime = moment().startOf('year').format('YYYY-MM-DD HH:mm:ss')
    time.endTime = moment().endOf('year').format('YYYY-MM-DD HH:mm:ss')
    return time
  } else if (value === '3') {
    time.startTime = ''
    time.endTime = ''
    return time
  }
}
// 最大余额
const getChartPercent = (valueList, idx, precision) => {
  if (!valueList[idx].value) {
    return 0
  }
  valueList.map((item) => {
    item.value = Number(item.value)
  })
  // 求和
  const sum = valueList.reduce(function (acc, val) {
    return acc + val.value
  }, 0)
  if (sum === 0) {
    return 0
  }
  // 10的2次幂是100，用于计算精度。
  const digits = Math.pow(10, precision)
  // 扩大比例100，
  const votesPerQuota = valueList.map(function (val) {
    return ((isNaN(val.value) ? 0 : val.value) / sum) * digits * 100
  })
  // 总数，扩大比例意味的总数要扩大
  const targetSeats = digits * 100
  // 再向下取值，组成数组
  const seats = votesPerQuota.map(function (votes) {
    return Math.floor(votes)
  })
  // 再新计算合计，用于判断与总数量是否相同，相同则占比会100%
  let currentSum = seats.reduce(function (acc, val) {
    return acc + val
  }, 0)
  // 余数部分的数组：原先数组减去向下取值的数组，得到余数部分的数组
  const remainder = votesPerQuota.map(function (votes, idx) {
    return votes - seats[idx]
  })
  // 给最大最大的余额加1，凑个占比100%；
  while (currentSum < targetSeats) {
    //  找到下一个最大的余额，给其加1
    let max = Number.NEGATIVE_INFINITY
    let maxId = null
    for (let i = 0, len = remainder.length; i < len; ++i) {
      if (remainder[i] > max) {
        max = remainder[i]
        maxId = i
      }
    }
    // 对最大项余额加1
    ++seats[maxId]
    // 已经增加最大余数加1，则下次判断就可以不需要再判断这个余额数。
    remainder[maxId] = 0
    // 总的也要加1，为了判断是否总数是否相同，跳出循环。
    ++currentSum
  }
  // 这时候的seats就会总数占比会100%
  return seats[idx] / digits
}

const uuid = () => {
  const uuid = []
  const hexDigits = '0123456789abcdef'
  for (let i = 0; i < 36; i++) {
    uuid[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
  }
  uuid[14] = '4'
  uuid[19] = hexDigits.substr((uuid[19] & 0x3) | 0x8, 1)
  uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
  return 'u' + uuid.join('').replaceAll('-', '')
}

export { getTime, getChartPercent, uuid }
